package com.example.service;

import com.example.common.PageResult;
import com.example.dto.StockOperationDTO;
import com.example.dto.StockRecordQueryDTO;
import com.example.vo.StockRecordVO;

import java.util.List;

/**
 * 库存记录Service接口
 */
public interface StockRecordService {

    /**
     * 商品入库
     *
     * @param operationDTO 操作DTO
     * @param operatorId   操作员ID
     * @param operatorName 操作员姓名
     * @return 是否成功
     */
    boolean stockIn(StockOperationDTO operationDTO, Long operatorId, String operatorName);

    /**
     * 商品出库
     *
     * @param operationDTO 操作DTO
     * @param operatorId   操作员ID
     * @param operatorName 操作员姓名
     * @return 是否成功
     */
    boolean stockOut(StockOperationDTO operationDTO, Long operatorId, String operatorName);

    /**
     * 分页查询库存记录
     *
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    PageResult<StockRecordVO> getPageList(StockRecordQueryDTO queryDTO);

    /**
     * 根据商品ID查询库存记录
     *
     * @param productId 商品ID
     * @return 库存记录列表
     */
    List<StockRecordVO> getByProductId(Long productId);

    /**
     * 导出库存记录
     *
     * @param queryDTO 查询条件
     * @return 库存记录列表
     */
    List<StockRecordVO> exportRecords(StockRecordQueryDTO queryDTO);
} 